package com.deng.Service;

import com.deng.config.AllAttriOfPaper;
import com.deng.config.PaperAndComments;
import com.deng.model.Paper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * @Author 邓小熙
 * @Date 2022/5/9 21:31
 * @Version 1.0
 */

public interface PaperService {
    /**
     * 根据id查询paper
     */
    Paper findPaperById(int id);

    AllAttriOfPaper findAllAttriOfPaper( int id);

    /**
     * 通过时间前后顺序查找所有文章
     * @return
     */
    Map<String, List<PaperAndComments>> findAllPapersByTime();

    /**
     * 查找一个月内的所有文章
     * @return
     */
    PageInfo<Paper> findPaperInMonth();
    /**
     * 返回文章和评论信息 按热度排序
     * @return
     */
    Map<String, List<PaperAndComments>> findAllPapersByMark();

    /**
     * 通过ID查找文章标题
     * @param comments_paper
     * @return
     */
    String findPaperTitleById(int comments_paper);
    /**
     * 得到前一篇和下一片的内容
     * @param paperId
     * @return
     */
    Map<String, Object> findPreAndNextPage(int paperId);
    /**
     * 个人页面所有文章,通过用户姓名查找该用户的所有文章
     * @param pageNum
     * @param search
     * @param name
     * @return
     */
    PageInfo<Paper> findPaperByUserName(String name, int pageNum, String search);
    /**
     *   文章库
     * @param pageNum
     * @param search
     * @return
     */
    PageInfo findAllPapers(String search, int pageNum);

    List  findAllPapers(String search);
    /**
     * 通过用户统计该用户文章数量
     * @param friendName
     * @return
     */
    int findCountOfPaperByUser(String friendName);
    /**
     * 根据名字查询文章
     * @param name
     * @param pageNum
     * @return
     */
    Map<String, Object> findPaperByUser(String name, String pageNum);
    /**
     * 更新文章内容
     * @param id
     * @param content
     * @return
     */
    @Transactional
    int updatePaperContentById(String content, String id);

    @Transactional
    int deletePaperByPaperId(int id);
    /**
     * 后台文章管理的数据
     * @param pageNum 当前页数
     * @param timePick 时间选择
     * @param search 查询关键字
     * @return所有文章的数据
     */
    Map<String, Object> findPapers(int pageNum, String search, String timePick);
    /**
     * 更改文章状态执行方法
     * @param review 输入状态 string类型
     * @param id 文章id
     * @return
     */
    int updatePaperStatus(int id, String review);

    int findAllPaperCount();

    /**
     * 新建文章
     * @param title
     * @param content
     * @param segment
     * @param user
     * @return
     */
    int insertPaper(String title, String content, String segment, String user,String paper_image);
    /**
     * 根据信息查id
     * @param title
     * @param segment
     * @param user
     * @return
     */
    int findPaperId(String title, String segment, String user);

//    PageInfo<Paper> findAllPapersByPageInfo(int pageNum);

}
